転送とバッファリング

[flow_graph.forwarding_and_buffering]

転送

flow::graph でサクセサーにメッセージを転送するノードには、プロパティーに次の 2 つの転送ポリシーがあります:

  • broadcast-push - メッセージは受け入れるすべてのサクセサーにプッシュされます。メッセージを受け付けるサクセサーがない場合、メッセージはノードのバッファーポリシーに応じて処理されます。

  • single-push - 1 つのサクセサーがメッセージを受け付けると、そのメッセージはそれ以上プッシュされません。サクセサーがメッセージの受信を拒否した場合、セット内の次のサクセサーが試されます。この処理はサクセサーがメッセージを受け取るまで、またはすべてのサクセサーが試されるまで続行されます。メッセージを受け付けるサクセサーがない場合、メッセージは将来再送信するため保持されます。サクセサーに転送されはメッセージはノードから削除されます。

バッファリング

サクセサーにプッシュできないメッセージを処理するには 2 つのポリシーあります。

  • buffering - メッセージを受け付けるサクセサーがない場合、後続のノードがメッセージを処理が使用できるよう保存されます。出力をバッファリングするノードには、「try_get()?」 カラムに 「はい」 が示されています。

  • discarding - メッセージを受け付けるサクセサーがない場合、メッセージは破棄され、グラフの実行には影響しません。出力を破棄するノードには、「try_get()?」カラムに「いいえ」が示されます。

以下の表は各ノードのポリシーの一覧です:

バッファーと転送プロパティーのまとめ

ノード

try_get()?

転送

機能ノード

input_node

はい

broadcast-push

function_node<rejecting>

いいえ

broadcast-push

function_node<queueing>

いいえ

broadcast-push

continue_node

いいえ

broadcast-push

multifunction_node<rejecting>

いいえ

broadcast-push

multifunction_node<queueing>

いいえ

broadcast-push

バッファリング・ノード

buffer_node

はい

single-push

priority_queue_node

はい

single-push

queue_node

はい

single-push

sequencer_node

はい

single-push

overwrite_node

はい

broadcast-push

write_once_node

はい

broadcast-push

分割/ジョインノード

join_node<queueing>

はい

broadcast-push

join_node<reserving>

はい

broadcast-push

join_node<tag_matching>

はい

broadcast-push

split_node

いいえ

broadcast-push

indexer_node

いいえ

broadcast-push

その他のノード

broadcast_node

いいえ

broadcast-push

limiter_node

いいえ

broadcast-push